package com.ha7419x.multicaster;

import com.ha7419x.listener.ApplicationListener;
import org.springframework.context.ApplicationEvent;
import org.springframework.core.ResolvableType;
import org.springframework.lang.Nullable;

/**
 * 系统广播器
 */
public interface ApplicationEventMulticaster {
    // 添加事件监听器
    void addApplicationListener(ApplicationListener<?> listener);
    // 添加事件监听器
    void addApplicationListenerBean(String listenerBeanName);
    // 移除指定事件监听器
    void removeApplicationListener(ApplicationListener<?> listener);
    // 移除指定事件监听器
    void removeApplicationListenerBean(String listenerBeanName);
    // 移除所有事件监听器
    void removeAllListeners();
    // 事件广播
    void multicastEvent(ApplicationEvent event);
    // 事件广播
    void multicastEvent(ApplicationEvent event, @Nullable ResolvableType eventType);
}
